Peer-to-peer networks have historically been used, for example, for connecting millions of users to allow the storage and downloading of terabytes of information internationally. In such cases, peer-to-peer platforms have been used for, and optimized for, downloading static files. In these and other settings, advances of peer-to-peer networks have made them much more reliable to loss of nodes. For example, peer-to-peer networks using Distributed Hash Tables have enabled peer-to-peer networks that may provide some level of consistency and performance in a fault-prone environment, without necessarily having to use coordinating servers.
A computer on such a server-less peer-to-peer network may generally be able to maintain only a limited number of connections, but may be able to locate every computer on the network with a provably high probability. This ability to locate computers on the network may reduce or remove the need to have a server (or groups of servers) to fulfill client requests. Further, this ability may be used to reduce or eliminate points of failure, and may increase a scalability and robustness of the network.
As referenced above, many peer-to-peer networks are optimized for downloading. As such, peer-to-peer networks can download files from multiple sources, and can even reconstruct a file from multiple partial files, even when the original complete file no longer exists on the network. This deconstruction and reconstruction from a deterministic algorithm allows, for example, for multiple peers to construct and reconcile portions of a file.
Some peer-to-peer networks allow for tag-based storage, which adds additional searching capabilities to help find a file or type of file for downloading. Some peer-to-peer networks allow for cryptographic storage and retrieval. Some peer-to-peer networks allow for redundant file storage. Some peer-to-peer networks require republishing of data periodically, and expire files after a period of time if they are not republished.